16进制颜色的没一个分量用1到2位16进制数表示,红色、绿色和蓝色三种颜色中的每一种都可以取从 00 到 FF 的值。为了避免数字系统的定义混淆,十六进制数字前面带有#
,格式为#rrggbbaa
,例如#0ABAB5FF
。可以使用编码类型的缩写形式,格式为#rgba
。#FC0
等同于#FFCC00
而不是#F0C000
。
TypeScript是一种基于JavaScript的强类型编程语言,数据转换时要求类型校验,那么用TypeScript会更方便些。正则中?<value>
用来给()
里的分组命名,不命名groups
属性就是undefined
。
hexRGB(A)→RGB(A)
const BASE = 16;
const BYTE_MAX_VALUE = BASE * BASE;
const RGB_MAX_VALUE = BYTE_MAX_VALUE - 1;
function hexRGBA2RGBA(prop: any): number[] {
const matchResult = `${
prop}`.match(/^#?(?<value>[a-z0-9]*)$/i);
if (!(matchResult && matchResult.groups)) {
return [];
}
const rawColor = matchResult.groups.value;
let colorStr: string = rawColor;
let ret: number[] = [];
ret[3] = RGB_MAX_VALUE